package business;

import business.EmpregadoBO;
import business.EmpregadoException;
import java.text.ParseException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

public class EmpregadoBOTestDataNascimento {
    
    public EmpregadoBOTestDataNascimento() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }
    
    @Before
    public void setUp() {
    }
    
    @After
    public void tearDown() {
    }
    
    /**
     * Testes do método que verifica se o empregado não é menor de 18 anos.
     * 
     * @author Zeno
     * 
     */
    
    @Test(expected = ParseException.class)
    public void testVerificaDataNascimentoComDataDesligamentoNascimento() throws EmpregadoException, Exception, ParseException {
        String dataNascimento = "508317";
        String dataAdmissao = "11/03/1997";
        dataNascimentoInvalida(dataNascimento, dataAdmissao);
    }
    
    @Test(expected = ParseException.class) 
    public void testVerificaDataNascimentoComDataAdmissaoInvalida() throws EmpregadoException, Exception, ParseException {
        String dataNascimento = "03/09/2008";
        String dataAdmissao = "0952309";
        dataNascimentoInvalida(dataNascimento, dataAdmissao);
    }
    
    @Test(expected = EmpregadoException.class) 
    public void testDataNascimentoIgualDataAdmissao() throws EmpregadoException, Exception, ParseException {
        String dataNascimento = "10/01/2000";
        String dataAdmissao = "10/01/2000";
        dataNascimentoInvalida(dataNascimento, dataAdmissao);
    }
    
    @Test(expected = EmpregadoException.class) 
    public void testDataNascimentoMenosQueDezoitoAnosDataAdmissao() throws EmpregadoException, Exception, ParseException {
        String dataNascimento = "16/07/1982";
        String dataAdmissao = "19/02/1990";
        dataNascimentoInvalida(dataNascimento, dataAdmissao);
    }
    
    @Test
    public void testDataNascimentoMaisQueDezoitoAnosDataAdmissao() throws EmpregadoException, Exception, ParseException {
        String dataNascimento = "28/02/1978";
        String dataAdmissao = "31/09/2011";
        dataNascimentoValida(dataNascimento, dataAdmissao);
    }
    
    private void dataNascimentoValida(String dataNascimento, String dataAdmissao) throws EmpregadoException, Exception, ParseException {
        boolean valido = EmpregadoBO.getInstance().validaDataNascimento(dataNascimento, dataAdmissao);
        assertEquals(true, valido);
    }
    
    private void dataNascimentoInvalida(String dataNascimento, String dataAdmissao) throws EmpregadoException, ParseException {
        boolean invalido = EmpregadoBO.getInstance().validaDataNascimento(dataNascimento, dataAdmissao);
    }
    
}
